<?php

/**
 * proyectos actions.
 *
 * @package    SistemaWebUnlSenescyt
 * @subpackage proyectos
 * @author     JFernando
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class proyectosActions extends sfActions {

    public function executeIndex(sfWebRequest $request) {
        $this->proyectos = Doctrine_Core::getTable('proyecto')
                ->createQuery('a')
                ->execute();
    }

    public function executeGraba(sfWebRequest $request) {

        if (isset($_POST['id']) && isset($_POST['firstname']) && isset($_POST['lastname'])) {
            $id = mysql_escape_String($_POST['id']);
            $firstname = mysql_escape_String($_POST['firstname']);
            $lastname = mysql_escape_String($_POST['lastname']);
            $q = Doctrine_Query::create()
                    ->from('proyecto p')
                    ->where('p.id_pro = ?', $id);
            $pro = $q->fetchOne();
            $pro->setNombre($firstname);
            $pro->setDirector($lastname);
            $pro->save();
        }
    }

    public function executeShow(sfWebRequest $request) {
        $this->proyecto = Doctrine_Core::getTable('proyecto')->find(array($request->getParameter('id_pro')));
        $this->forward404Unless($this->proyecto);
    }

    public function executeNew(sfWebRequest $request) {
        $this->form = new proyectoForm();
    }

    public function executeCreate(sfWebRequest $request) {
        $this->forward404Unless($request->isMethod(sfRequest::POST));
        $this->form = new proyectoForm();
        $this->processForm($request, $this->form);
        $this->setTemplate('new');
    }

    public function executeEdit(sfWebRequest $request) {
        $this->forward404Unless($proyecto = Doctrine_Core::getTable('proyecto')->find(array($request->getParameter('id_pro'))), sprintf('Object proyecto does not exist (%s).', $request->getParameter('id_pro')));
        $this->form = new ProyectoForm2($proyecto);
    }

    public function executeUpdate(sfWebRequest $request) {
        $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
        $this->forward404Unless($proyecto = Doctrine_Core::getTable('proyecto')->find(array($request->getParameter('id_pro'))), sprintf('Object proyecto does not exist (%s).', $request->getParameter('id_pro')));
        $this->form = new proyectoForm2($proyecto);

        $this->processFormEdit($request, $this->form);

        $this->setTemplate('edit');
    }

    public function executeDelete(sfWebRequest $request) {
        $request->checkCSRFProtection();

        $this->forward404Unless($proyecto = Doctrine_Core::getTable('proyecto')->find(array($request->getParameter('id_pro'))), sprintf('Object proyecto does not exist (%s).', $request->getParameter('id_pro')));
        $proyecto->delete();
        $this->getUser()->setFlash('notice', 'Proyecto Borrado Correctamente!');
        $this->redirect('proyectos/index');
    }

    protected function processForm(sfWebRequest $request, sfForm $form) {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        if ($form->isValid()) {


            $form->getObject()->setIdUser($this->user = sfContext::getInstance()->getUser()->getGuardUser()->getId());
            $form->getObject()->setEstado(0);
            $proyecto = $form->save();
            $this->getUser()->setAttribute('id_pro', $form->getObject()->getIdPro());


            $fi = explode("-", $proyecto->getPeriodos()->getFechai());
            $ff = explode("-", $proyecto->getPeriodos()->getFechaf());
            $ai = $fi[0];
            $mi = $fi[1];
            $af = $ff[0];
            $mf = $ff[1];
            $resul = 0;
            if ($ai == $af) {
                if ($mi == 01 && $mf == 12) {
                    $resul = 1;
                } else {
                    $resul = 0;
                }
            } else {

                if ($ai < $af) {
                    if ($mi = 02 && $mf == 01) {
                        $resul = 1;
                    } else if ($mi = 03 && $mf == 02) {
                        $resul = 1;
                    } else if ($mi = 04 && $mf == 03) {
                        $resul = 1;
                    } else if ($mi = 05 && $mf == 04) {
                        $resul = 1;
                    } else if ($mi = 06 && $mf == 05) {
                        $resul = 1;
                    } else if ($mi = 07 && $mf == 06) {
                        $resul = 1;
                    } else if ($mi = 08 && $mf == 07) {
                        $resul = 1;
                    } else if ($mi = 09 && $mf == 08) {
                        $resul = 1;
                    } else if ($mi = 10 && $mf == 09) {
                        $resul = 1;
                    } else if ($mi = 11 && $mf == 10) {
                        $resul = 1;
                    } else if ($mi = 12 && $mf == 11) {
                        $resul = 1;
                    } else if ($mi = 01 && $mf == 12) {
                        $resul = 1;
                    } else {
                        $resul = 0;
                    }
                } else if ($af - $ai >= 2) {
                    $resul = 1;
                } else {
                    $resul = 0;
                }
            }

            if ($resul == 1) {
                //$this->redirect('proyectos/index');
                $techospresupuestarioss = Doctrine_Core::getTable('techospresupuestarios')
                        ->createQuery('a')
                        ->execute();
                foreach ($techospresupuestarioss as $te) :
                    $techo = new Techos();
                    $techo->setIdPro($proyecto->getIdPro());
                    $techo->setNombre($te->getNombre());
                    $techo->setPorcentaje($te->getPorcentaje());
                    $techo->save();
                endforeach;
                $this->redirect('intro/new?id_pro=' . $proyecto->getIdPro());
            } else {
                $proyecto->delete();
                $this->getUser()->setFlash('error', 'Su proyecto no esta dentro del rango de minimo de 1 año!');
                $this->redirect('proyectos/new');
            }
        }
    }

    protected function processFormEdit(sfWebRequest $request, sfForm $form) {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        if ($form->isValid()) {

            $proyecto = $form->save();

//            $auxpro=new Proyecto();
//            $auxpro->getPeriodos()->getFechai();
//            $auxpro->getPeriodos()->getFechaf();


            $fi = explode("-", $proyecto->getPeriodos()->getFechai());
            $ff = explode("-", $proyecto->getPeriodos()->getFechaf());
            $ai = $fi[0];
            $mi = $fi[1];
            $af = $ff[0];
            $mf = $ff[1];
            $resul = 0;
            if ($ai == $af) {
                if ($mi == 01 && $mf == 12) {
                    $resul = 1;
                } else {
                    $resul = 0;
                }
            } else {

                if ($ai < $af) {
                    if ($mi = 02 && $mf == 01) {
                        $resul = 1;
                    } else if ($mi = 03 && $mf == 02) {
                        $resul = 1;
                    } else if ($mi = 04 && $mf == 03) {
                        $resul = 1;
                    } else if ($mi = 05 && $mf == 04) {
                        $resul = 1;
                    } else if ($mi = 06 && $mf == 05) {
                        $resul = 1;
                    } else if ($mi = 07 && $mf == 06) {
                        $resul = 1;
                    } else if ($mi = 08 && $mf == 07) {
                        $resul = 1;
                    } else if ($mi = 09 && $mf == 08) {
                        $resul = 1;
                    } else if ($mi = 10 && $mf == 09) {
                        $resul = 1;
                    } else if ($mi = 11 && $mf == 10) {
                        $resul = 1;
                    } else if ($mi = 12 && $mf == 11) {
                        $resul = 1;
                    } else if ($mi = 01 && $mf == 12) {
                        $resul = 1;
                    } else {
                        $resul = 0;
                    }
                } else if ($af - $ai >= 2) {
                    $resul = 1;
                } else {
                    $resul = 0;
                }
            }

            if ($resul == 1) {
                $this->getUser()->setFlash('notice', 'Proyecto Actualizado Correctamente!');
                $this->redirect('proyectos/index');
            } else {
                $this->getUser()->setFlash('error', 'Su proyecto no esta dentro del rango de minimo de 1 año!');
                $this->redirect('proyectos/edit?id_pro=' . $proyecto->getIdPro());
            }
        }
    }

}
